#include<bits/stdc++.h>
using namespace std;
namespace IO{
    const int BUF=1<<21;
    char buff[BUF],*p1=buff,*p2=buff;
    #define getchar() (p1==p2&&(p2=((p1=buff)+fread(buff,1,BUF,stdin)),p1==p2)?EOF:*p1++)
    template<typename T>inline void read(T &x){
        char ch=getchar();x=0;int f=1;
        while(!isdigit(ch)){if(ch=='-')f=-1;ch=getchar();}
        while(isdigit(ch)) x=(x<<1)+(x<<3)+(ch^48),ch=getchar();
        x*=f;
    }
}
using namespace IO;
const int N=1005;
int T,n,mod,a[N][N],b[N][N],c[N][N];
int main(){
	freopen("matrix.in","r",stdin);
	freopen("matrix.out","w",stdout);
	read(T);
	while(T--){
		read(mod),read(n);
		for(int i=1;i<=n;++i)
		for(int j=1;j<=n;++j) read(a[i][j]);
		for(int i=1;i<=n;++i)
		for(int j=1;j<=n;++j) read(b[i][j]);
		for(int i=1;i<=n;++i)
		for(int j=1;j<=n;++j) read(c[i][j]);
		bool flag=1;
		if(mod==2){
			bitset<N> A[N],B[N];
			for(int i=1;i<=n;++i)
			for(int j=1;j<=n;++j) A[i][j]=a[i][j]&1;
			for(int j=1;j<=n;++j)
			for(int i=1;i<=n;++i)
				B[j][i]=b[i][j]&1;
			for(int i=1;i<=n&&flag;++i)
			for(int j=1;j<=n&&flag;++j){
				if(((A[i]&B[j]).count()&1)!=(c[i][j]&1)){
					flag=0;
					puts("No");
				}
			}
		}else{
			for(int i=1;i<=n&&flag;++i)
			for(int j=1;j<=n&&flag;++j){
				long long ans=0;
				for(int k=1;k<=n;++k) ans+=1ll*a[i][k]*b[k][j]%mod;
				if(ans%mod!=c[i][j]){
					puts("No");
					flag=0;
				}
			}
		}
		if(flag) puts("Yes");
	}
	return 0;
}

